 0030             .BA $7B00
 0050             .ES
 0090  STEP       .DE $5
 0100  PGM.PTR    .DE $D3
 0110  LBL.PTR    .DE $D5
 0120  PARTIAL    .DE $E5 
 0130  PTR.STRT   .DE $E6 
 0140  RUN.NU     .DE $E8
 0150  END        .DE $E9 
 0160  FORMAT     .DE $EB
 0170  LENGTH     .DE $EC
 0180  LMNEM      .DE $ED
 0190  RMNEM      .DE $EE
 0200  YSAVE      .DE $EF
 0210  PCL        .DE $F0
 0220  PCH        .DE $F1
 0230  LBL.IDX    .DE $F2
 0240  TEMP       .DE $F4
 0250  INVALID    .DE $F5
 0260  LINE.NU    .DE $F6
 0270  TXT.LOW    .DE $100
 0280  LBL.LOW    .DE $104
 0290  ;
 0300  ;
 0310  ;
 0320  INBYTE     .DE $81D9
 0330  NIBASC     .DE $8309
 0340  INCHR      .DE $8A1B
 0350  ACCESS     .DE $8B86
 0360  TECHO      .DE $A653
 0370  OUTVEC     .DE $A663
 0380  RAE.WARM   .DE $B003
 0390  ;
 0400  ; MACRO DEF'NS
 0410  ;
 0420  !!!SZ      .MD (ADR.1 ADR.2)
 0430             LDA *ADR.1
 0440             STA *ADR.2
 0450             LDA *ADR.1+1
 0460             STA *ADR.2+1
 0470             .ME
 0490  !!!SA      .MD (ADR.1 ADR.2)
 0500             LDA ADR.1
 0510             STA *ADR.2
 0520             LDA ADR.1+1
 0530             STA *ADR.2+1
 0540             .ME
 0560  ; GET START AND END ADDR
 0620             LDX #$12
 0630  MOVE1      LDA *$E5,X
 0640             STA Z.STORE+1,X
 0650             DEX
 0660             BPL MOVE1
 0680             INX
 0690             STX *PARTIAL
 0690             JSR TOGGLE
 0690             LDA #0
 0690             STA *RUN.NU
 0690             STA *INVALID
 0700  MSG3       LDA MESS3,X
 0710             BEQ FIN.3
 0720             JSR OUTVEC
 0730             INX
 0740             BNE MSG3
 0750  FIN.3      JSR INCHR
 0760             CMP #'D
 0770             BEQ CONT
 0780             CMP #'L
 0790             BNE GO.RAE
 0800             LDY #$80
 0810             STY *PARTIAL
 0820             BNE CONT
 0840  GO.RAE     JMP RAE.RTN
 0860  PASS2      LDX #0
 0870  MSG.4      LDA MESS4,X
 0880             BEQ FIN.4
 0890             JSR OUTVEC
 0900             INX
 0910             BNE MSG.4
 0920  FIN.4      LDY #$40
 0930             STY *PARTIAL
 0950  CONT       LDX #0
 0960  MSG1       LDA MESS1,X
 0970             BEQ FIN.1
 0980             JSR OUTVEC
 0990             INX
 1000             BNE MSG1
 1010  FIN.1      JSR INBYTE
 1020             STA *PTR.STRT+1
 1030             JSR INBYTE
 1040             STA *PTR.STRT
 1050             LDX #0
 1060  MSG2       LDA MESS2,X
 1070             BEQ FIN.2
 1080             JSR OUTVEC
 1090             INX
 1100             BNE MSG2
 1110  FIN.2      JSR INBYTE
 1120             STA *END+1
 1130             JSR INBYTE
 1140             STA *END
 1160             BIT *PARTIAL
 1170             BVC PA.1
 1180             LDA #0
 1190             STA *PARTIAL
 1200             JMP PA.2
 1220  ; DIS PRGM
 1240  PA.1       SA (LBL.LOW PGM.PTR)
 1250             BNE DIS.AS
 1260  START      SA (TXT.LOW PGM.PTR)
 1270             LDA #$95
 1280             STA *LINE.NU
 1290             LDA #0
 1300             STA *INVALID
 1310             STA *LINE.NU+1
 1320             STA *TEMP
 1330  DIS.AS     SZ (PTR.STRT PCL)
 1340  DSMBL      JSR INST.DIS
 1350             JSR PCADJ
 1360             STA *PCL
 1370             STY *PCH
 1381             CPY *END+1
 1382             BCC DSMBL
 1383             BNE SET.RUN
 1384             LDA *END
 1385             CMP *PCL
 1386             BCS DSMBL
 1387  SET.RUN    BIT *RUN.NU
 1388             BMI FINISH
 1389  PA.2       SZ (PGM.PTR LBL.PTR)
 1470             LDA #$80
 1480             STA *RUN.NU
 1490             LDA *PARTIAL
 1500             BEQ START
 1510             JMP PASS2
 1530  FINISH     JSR ASC.STORE
 1540             LDA #0
 1550             JSR A.STORE
 1560  RAE.RTN    LDX #$12
 1570  MOVE2      LDA Z.STORE+1,X
 1580             STA *$E5,X
 1590             DEX
 1600             BPL MOVE2
 1610             JSR TOGGLE
 1620             JMP RAE.WARM
 1640  INST.DIS   BIT *RUN.NU
 1650             BPL OP.CODE
 1660  INC.LINE   CLC
 1670             SED
 1680             LDA *LINE.NU
 1690             ADC #STEP
 1700             STA *LINE.NU
 1710             JSR A.STORE
 1720             LDA *LINE.NU+1
 1730             BCC DIS.A
 1740             ADC #0
 1750  DIS.A      STA *LINE.NU+1
 1760             JSR A.STORE
 1770             CLD
 1780             LDA *TEMP
 1790             CMP #$60
 1800             BEQ COMMENT
 1810             CMP #$4C
 1820             BEQ COMMENT
 1830             CMP #$6C
 1840             BNE CK.LBL
 1850  COMMENT    LDA *INVALID
 1860             BNE CK.LBL
 1870             LDA #$BB
 1880             JSR A.STORE
 1890             STA *TEMP
 1900             BNE INC.LINE
 1910  CK.LBL     JSR LABEL
 1930             BCS NO.LBL
 1940             LDA #'L
 1950             JSR A.STORE
 1960             LDA *PCH
 1970             JSR ASC.STORE
 1980             LDA *PCL
 1990             JSR ASC.STORE
 2000             LDA #0
 2010             STA *INVALID
 2020  NO.LBL     LDA #$20
 2030             JSR A.STORE
 2040  OP.CODE    LDA *INVALID
 2050             BNE ERR
 2060             LDX #0
 2070             LDA (PCL,X)
 2080             TAY
 2090             LSR A
 2100             BCC IEVEN
 2110             LSR A
 2120             BCS ERR
 2130             CMP #$22
 2140             BEQ ERR
 2150             AND #$07
 2160             ORA #$80
 2170  IEVEN      LSR A
 2180             TAX
 2190             LDA MODE,X
 2200             BCS RTMODE
 2210             LSR A
 2220             LSR A
 2230             LSR A
 2240             LSR A
 2250  RTMODE     AND #$F
 2260             BNE GETFMT
 2270  ERR        LDY #$80
 2280             LDA #$0
 2290  GETFMT     TAX
 2300             LDA MODE2,X
 2310             STA *FORMAT
 2320             AND #$03
 2330             STA *LENGTH
 2340             TYA
 2350             AND #$8F
 2360             TAX
 2370             TYA
 2380             LDY #$03
 2390             CPX #$8A
 2400             BEQ MNNDX3
 2410  MNNDX1     LSR A
 2420             BCC MNNDX3
 2430             LSR A
 2440  MNNDX2     LSR A
 2450             ORA #$20
 2460             DEY
 2470             BNE MNNDX2
 2480             INY
 2490  MNNDX3     DEY
 2500             BNE MNNDX1
 2510             LDX #$03
 2520             TAY
 2530             LDA MNEML,Y
 2540             STA *LMNEM
 2550             LDA MNEMR,Y
 2560             STA *RMNEM
 2570             BIT *RUN.NU
 2580             BPL END.NMEM
 2590  PRMN1      LDA #$00
 2600             LDY #$05
 2610  PRMN2      ASL *RMNEM
 2620             ROL *LMNEM
 2630             ROL A
 2640             DEY
 2650             BNE PRMN2
 2660             ADC #$3F
 2670             CMP #$3F
 2680             BNE =+5
 2690             LDA #'.
 2700             STA *INVALID
 2710             JSR A.STORE
 2720             DEX
 2730             BNE PRMN1
 2750             LDA (PCL,X)
 2760             STA *TEMP
 2770             LDA #$20
 2780             JSR A.STORE
 2790             LDA *INVALID
 2820             BEQ CK.BIT
 2830             LDA #'$
 2840             JSR A.STORE
 2850             LDA (PCL,X)
 2860             PHA
 2870             JSR ASC.STORE
 2880             PLA
 2890             AND #$7F
 2900             CMP #$20
 2910             BCC X.END
 2920             PHA
 2930             LDA #$20
 2940             JSR A.STORE
 2950             LDA #';
 2960             JSR A.STORE
 2970             PLA
 2980             JSR A.STORE
 2990  X.END      JMP END.LINE
 3000  ;
 3010  CK.BIT     LDA (PCL,X)
 3020             CMP #$2C
 3030             BNE END.NMEM
 3040             LDA *PCH 
 3050             STA *YSAVE
 3060             INC *PCL
 3070             BNE =+3
 3080             INC *PCH
 3090             JSR LABEL
 3100             DEC *PCL
 3110             LDA *YSAVE
 3120             STA *PCH
 3130             BCS END.NMEM
 3140             SEC
 3150             LDA *PGM.PTR
 3160             SBC #4
 3170             STA *PGM.PTR
 3180             BCS =+3
 3190             DEC *PGM.PTR+1
 3200             JMP ERR
 3220  END.NMEM   LDX #$06
 3230  PRADR1     CPX #$03
 3240             BNE PRADR3
 3250             LDY *LENGTH
 3260             BEQ PRADR3
 3270             LDA *FORMAT
 3280             CMP #$E8
 3290             BCS RELADR
 3300             LDA #'L
 3310             CPY #2
 3320             BEQ PRADR2
 3330             BIT *RUN.NU
 3340             BPL CK.REL
 3350             LDA #'$
 3360  PRADR2     JSR A.STORE
 3370  BYTE2      LDA (PCL),Y
 3380             JSR ASC.STORE
 3390             DEY
 3400             BNE BYTE2
 3410  PRADR3     BIT *RUN.NU
 3420             BPL PRADR4
 3430             LDA *FORMAT
 3440             LSR A
 3445             BCC NZERO
 3450             CMP #$09
 3455             BCS NZERO
 3460             LDA #'*
 3470             JSR A.STORE
 3480  NZERO      ASL *FORMAT
 3490             BCC PRADR4
 3500             LDA CHAR1-1,X
 3510             JSR A.STORE
 3520             LDA CHAR2-1,X
 3530             BEQ PRADR4
 3540             JSR A.STORE
 3550  PRADR4     DEX
 3560             BNE PRADR1
 3570             BIT *RUN.NU
 3580             BPL RTS1
 3590             BMI END.LINE
 3600  CK.REL     LDA *FORMAT
 3610             CMP #$1D
 3620             BNE RTS1
 3630  RELADR     LDA (PCL),Y
 3640             JSR PCADJ2
 3650             TAX
 3660             INX
 3670             BNE PRNTYX
 3680             INY
 3690  PRNTYX     TYA
 3700  PRNTAX     PHA
 3710             LDA #'L
 3720             JSR A.STORE
 3730             PLA
 3740             JSR ASC.STORE
 3750  PRNTX      TXA
 3760             JSR ASC.STORE
 3770             BIT *RUN.NU
 3780             BPL RTS1
 3790             BMI END.LINE
 3800  PCADJ      LDA *LENGTH
 3810             SEC
 3820  PCADJ2     LDY *PCH
 3830             TAX
 3840             BPL PCADJ3
 3850             DEY
 3860  PCADJ3     ADC *PCL
 3870             BCC RTS1
 3880             INY
 3890  RTS1       RTS
 3910  END.LINE   PHP
 3912             STY *YSAVE
 3914  DECPTR     LDY *PGM.PTR
 3916             DEY
 3918             STY *PGM.PTR
 3920             CPY #$FF
 3922             BNE MRKEND
 3924             DEC *PGM.PTR+1
 3926  MRKEND     LDY #$00
 3928             LDA (PGM.PTR),Y
 3930             CMP #$20
 3932             BEQ DECPTR
 3934             ORA #$80
 3936             BMI A.STORE+3
 3950  ASC.STORE  PHP
 3960             BIT *RUN.NU
 3970             BPL A.STORE+1
 3980             PHA
 3990             LSR A
 4000             LSR A
 4010             LSR A
 4020             LSR A
 4030             JSR NIBASC
 4040             JSR A.STORE
 4050             PLA
 4060             JSR NIBASC
 4070             JSR A.STORE
 4080             PLP
 4090             RTS
 4110  A.STORE    PHP
 4120             STY *YSAVE
 4130             LDY #0
 4140             STA (PGM.PTR),Y
 4150             CLC
 4160             INC *PGM.PTR
 4170             BNE PG.RTN
 4180             INC *PGM.PTR+1
 4190  PG.RTN     PLP
 4200             LDY *YSAVE
 4210             RTS
 4220  ;
 4230  ;
 4240  ;
 4250  LABEL      SA (LBL.LOW LBL.IDX)
 4260             LDY #1
 4270             .BY $2C
 4280  NXT.LBL    LDY #3
 4290  NXT.CHR    INC *LBL.IDX
 4300             BNE NO.INC
 4310             INC *LBL.IDX+1
 4320  NO.INC     DEY
 4330             BNE NXT.CHR
 4340             LDA *PCH
 4350             CMP (LBL.IDX),Y
 4360             BNE CK.END
 4370             INY
 4380             LDA *PCL
 4390             CMP (LBL.IDX),Y
 4400             BNE CK.END
 4410             CLC
 4420             RTS
 4430  CK.END     LDA *LBL.IDX
 4440             CMP *LBL.PTR
 4450             BCC NXT.LBL
 4460             LDA *LBL.IDX+1
 4470             CMP *LBL.PTR+1
 4480             BCC NXT.LBL
 4490             RTS
 4510  ;
 4520  ;
 4530  MODE       .BY $40 $02 $45 $03 $D0 $08 $40 $09 $30
 4540  ;
 4550             .BY $22 $45 $33 $D0 $08 $40 $09 $40 $02 $45
 4560  ;
 4570  ;
 4580             .BY $33 $D0 $08 $40 $09 $40 $02 $45 $B3 $D0
 4590             .BY $08 $40 $09 $00 $22 $44 $33 $D0 $8C $44
 4600             .BY $00 $11 $22 $44 $33 $D0 $8C $44 $9A $10
 4610             .BY $22 $44 $33 $D0 $08 $40 $09 $10 $22 $44
 4620             .BY $33 $D0 $08 $40 $09 $62
 4630  ;
 4640             .BY $13 $78 $A9
 4650  MODE2      .BY $00
 4660             .BY $21
 4670             .BY $01
 4680             .BY $02
 4690             .BY $00
 4700             .BY $80
 4710             .BY $59
 4720             .BY $4D
 4730             .BY $11
 4740             .BY $12
 4750             .BY $06
 4760             .BY $4A
 4770             .BY $05
 4780             .BY $1D
 4790  CHAR1      .BY $2C $29 $2C $23 $28 $41
 4800  CHAR2      .BY $59 $00 $58 $00 $00 $00
 4810  ;
 4820  MNEML      .BY $1C $8A $1C $23 $5D $8B $1B $A1 $9D
 4830             .BY $8A $1D $23 $9D $8B $1D $A1 $00 $29 $19
 4840             .BY $AE $69 $A8 $19 $23 $24 $53 $1B $23
 4850             .BY $24 $53 $19 $A1 $00
 4860  ;
 4870             .BY $1A $5B $5B $A5 $69 $24 $24
 4880  ;
 4890             .BY $AE $AE $A8 $AD $29 $00 $7C $00
 4900  ;
 4910             .BY $15 $9C $6D $9C $A5 $69 $29 $53
 4920  ;
 4930             .BY $84 $13 $34 $11 $A5 $69 $23 $A0
 4940  ;
 4950  MNEMR      .BY $D8 $62 $5A $48 $26 $62 $94 $88
 4960             .BY $54 $44 $C8 $54 $68 $44 $E8 $94 $F4 $B4
 4970             .BY $08 $84 $74 $B4 $28 $6E $74 $F4 $CC $4A
 4980             .BY $72 $F2 $A4 $8A
 4990  ;
 5000             .BY $F4 $AA $A2 $A2 $74 $74 $74 $72
 5010  ;
 5020             .BY $44 $68 $B2 $32 $B2 $F4 $22 $F4
 5030  ;
 5040             .BY $1A $1A $26 $26 $72 $72 $88 $C8
 5050             .BY $C4 $CA $26 $48 $44 $44 $A2 $C8
 5060  MESS1      .BY $0D $0A 'START ADDRESS =$' $00
 5090  MESS2      .BY $0D $0A 'END ADDRESS =$' $00
 5100  MESS3      .BY $0D $0A 'DISASSEMBLE, LABELS FIRST'
 5110             .BY $0D $0A 'OR RETURN TO RAE (D,L OR R)?' $00
 5120  MESS4      .BY $0D $0A 'PASS 2' $00
 5130  ;
 5140  TOGGLE     JSR ACCESS
 5150             LDA TECHO
 5160             ORA #$80
 5170             STA TECHO
 5180  Z.STORE    RTS
 5185             .DS $12
 5190             .EN
